第一天就從 Getting Started 開始吧!
https://kubernetes.io/docs/tasks/tools/
此文件介紹了四個組件:kubectl, kind, minikube, kubeadm
其中 kubectl
是 k8s 的前端介面指令,這邊我們先略過不談
其餘三個都是可以提供建立 k8s cluster 的指令,以下會先簡略說明:
後續會先以 minikube
測試看看,後再用 kubeadm
來建立接下來的測試環境。
# 建立一個預設值的 cluster
kind create cluster
kind 的全稱為 Kubernetes in docker,顧名思義,就是透過 docker container 來跑起 kubernetes
原理是 kind 會使用一張叫做 kindest/node:${k8s_version}
的 image 來執行 container,而這個 container 會執行上述介紹的 kubeadm
指令來建立 k8s cluster
這樣的 container 用法會比較像是把 container 當作 VM 來用 (類似直接使用 ubuntu image 然後自己裝 k8s)
因此理論上只要是能夠使用 docker/podman 的環境上,只要安裝 kind 指令之後,就可以很快速的建立一個 k8s cluster。
指令使用也非常間單,就是直接呼叫 kind 即可
在 k8s 官方文件內的範例中,也可以看到使用 kind 來快速建立一個暫時測試用的 k8s cluster (e.g. https://kubernetes.io/docs/tutorials/security/cluster-level-pss/)
https://minikube.sigs.k8s.io/docs/start/?arch=/macos/arm64/stable/binary+download
# 建立一座 k8s cluster 並指定使用的 cpu/memory
minikube start --memory=8192mb --cpus=4
與 kind 類似,比較偏向於建立一座測試用的 k8s cluster,可以在各種的作業系統上執行 (e.g. Windows, macOS and Linux)
需求的資源也不大,從官方文件可以看到需求資源如下:
基本上只要是台電腦應該都可以符合上述的需求。
最後一點比較有趣,和 kind
不同,除了 Docker 以外,minikube
主要是使用 VM 的方式來提供 k8s cluster
查看 minikube
的 drivers 文件頁面,可以看到每種作業系統支援的安裝方式 https://minikube.sigs.k8s.io/docs/drivers/
以 Windows 為例,主要是透過:
透過 minikube
,我們就可以在 windows 上面建立一個 k8s cluster 學習使用了。
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
kubeadm
是官方直接維護的安裝方式,光是看安裝文件說明的內容就可以發現, kubeadm
所需的前置作業較多,並且僅支援 “A compatible Linux host” 的作業系統,就無法直接使用 windows 來進行安裝
因此若是要在 windows 下的環境使用,就必須自己額外處理建立出幾台 Linux OS VM 來做使用,再透過 kubeadm
來建立 k8s clusterkubeadm
的設定跟注意事項較多,也是這次挑戰預計主要使用的安裝方式,細節的部分就留到後面的天數再說囉 ~
因為我之前有試用過 kind 的關係,我打算跳過 kind 的部分,安裝 cluster 的部分會:
minikube
建立測試環境,並且研究一些指令kubeadm
建立正式環境,研究相對應的流程與 best practice接下來讓我們在 windows 上面跑 minikube
吧!
https://kubernetes.io/docs/tasks/tools/
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
https://minikube.sigs.k8s.io/docs/start/?arch=/macos/arm64/stable/binary+download